/*
 * Copyright (c) 2025 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import PickerModule, {
  SelectPhotoOptions,
  SelectPhotoResult,
  SelectDocumentOptions,
  SelectDocumentResult,
  SelectAudioOptions,
  SelectAudioResult,
  SelectContactOptions,
  SelectContactResult,
  QueryLocationOptions,
  ChooseLocationOptions,
  ChooseLocationResult,
  SelectDistrictOptions,
  SelectDistrictResult,
  SelectCameraMediaTypes,
  SelectCameraOptions,
  SelectCameraResult,
  StartScanOptions,
  StartScanResult,
} from './turbo/PickerModule';

export * from './turbo/PickerModule';

export const Picker = {
  selectAudio(options: SelectAudioOptions): Promise<SelectAudioResult | undefined> {
    return PickerModule.selectAudio(options);
  },
  selectCamera(
    mediaTypes: SelectCameraMediaTypes,
    options: SelectCameraOptions,
  ): Promise<SelectCameraResult | undefined> {
    return PickerModule.selectCamera(mediaTypes, options);
  },
  selectContact(options: SelectContactOptions): Promise<SelectContactResult | undefined> {
    return PickerModule.selectContact(options);
  },
  selectDocument(options: SelectDocumentOptions): Promise<SelectDocumentResult | undefined> {
    return PickerModule.selectDocument(options);
  },
  queryLocation(options: QueryLocationOptions): Promise<void> {
    return PickerModule.queryLocation(options);
  },
  chooseLocation(options: ChooseLocationOptions): Promise<ChooseLocationResult | undefined> {
    return PickerModule.chooseLocation(options);
  },
  selectDistrict(options: SelectDistrictOptions): Promise<SelectDistrictResult | undefined> {
    return PickerModule.selectDistrict(options);
  },
  selectPhoto(options: SelectPhotoOptions): Promise<SelectPhotoResult | undefined> {
    return PickerModule.selectPhoto(options);
  },
  startScan(options: StartScanOptions): Promise<StartScanResult | undefined> {
    return PickerModule.startScan(options);
  },
};
